﻿using System;
using System.Reflection;

namespace SocialApi.Core.Patterns
{
    /// <summary>
    /// Фабрика используется для отложенной инициализации экземпляра класса
    /// </summary>
    /// <typeparam name="S">Singleton класс</typeparam>
    internal class SingletonCreator<S>
        where S : class
    {
        private static readonly S instance = typeof(S).GetConstructor(BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[0], new ParameterModifier[0]).Invoke(null) as S;

        /// <summary>
        /// Возвращает экземпляр класса
        /// </summary>
        public static S CreatorInstance { get { return instance; } }
    }
}